home *** CD-ROM | disk | FTP | other *** search
- package mx.rpc.xml
- {
- import flash.xml.XMLDocument;
- import flash.xml.XMLNode;
- import mx.utils.ObjectUtil;
-
- public class SimpleXMLEncoder
- {
- public static const CLASS_INFO_OPTIONS:Object = {
- "includeReadOnly":false,
- "includeTransient":false
- };
-
- private var myXMLDoc:XMLDocument;
-
- public function SimpleXMLEncoder(param1:XMLDocument)
- {
- super();
- this.myXMLDoc = !!param1 ? param1 : new XMLDocument();
- }
-
- internal static function encodeDate(param1:Date, param2:String) : String
- {
- var _loc3_:String = null;
- var _loc4_:Number = NaN;
- _loc3_ = new String();
- if(param2 == "dateTime" || param2 == "date")
- {
- _loc3_ = _loc3_.concat(param1.getUTCFullYear(),"-");
- _loc4_ = param1.getUTCMonth() + 1;
- if(_loc4_ < 10)
- {
- _loc3_ = _loc3_.concat("0");
- }
- _loc3_ = _loc3_.concat(_loc4_,"-");
- _loc4_ = Number(param1.getUTCDate());
- if(_loc4_ < 10)
- {
- _loc3_ = _loc3_.concat("0");
- }
- _loc3_ = _loc3_.concat(_loc4_);
- }
- if(param2 == "dateTime")
- {
- _loc3_ = _loc3_.concat("T");
- }
- if(param2 == "dateTime" || param2 == "time")
- {
- _loc4_ = Number(param1.getUTCHours());
- if(_loc4_ < 10)
- {
- _loc3_ = _loc3_.concat("0");
- }
- _loc3_ = _loc3_.concat(_loc4_,":");
- _loc4_ = Number(param1.getUTCMinutes());
- if(_loc4_ < 10)
- {
- _loc3_ = _loc3_.concat("0");
- }
- _loc3_ = _loc3_.concat(_loc4_,":");
- _loc4_ = Number(param1.getUTCSeconds());
- if(_loc4_ < 10)
- {
- _loc3_ = _loc3_.concat("0");
- }
- _loc3_ = _loc3_.concat(_loc4_,".");
- _loc4_ = Number(param1.getUTCMilliseconds());
- if(_loc4_ < 10)
- {
- _loc3_ = _loc3_.concat("00");
- }
- else if(_loc4_ < 100)
- {
- _loc3_ = _loc3_.concat("0");
- }
- _loc3_ = _loc3_.concat(_loc4_);
- }
- return _loc3_.concat("Z");
- }
-
- private function getDataTypeFromObject(param1:Object) : uint
- {
- if(param1 is Number)
- {
- return DataType.NUMBER_TYPE;
- }
- if(param1 is Boolean)
- {
- return DataType.BOOLEAN_TYPE;
- }
- if(param1 is String)
- {
- return DataType.STRING_TYPE;
- }
- if(param1 is XMLDocument)
- {
- return DataType.XML_TYPE;
- }
- if(param1 is Date)
- {
- return DataType.DATE_TYPE;
- }
- if(param1 is Array)
- {
- return DataType.ARRAY_TYPE;
- }
- if(param1 is Function)
- {
- return DataType.FUNCTION_TYPE;
- }
- if(param1 is Object)
- {
- return DataType.OBJECT_TYPE;
- }
- return DataType.STRING_TYPE;
- }
-
- public function encodeValue(param1:Object, param2:QName, param3:XMLNode) : XMLNode
- {
- var _loc4_:XMLNode = null;
- var _loc5_:uint = 0;
- var _loc6_:Object = null;
- var _loc7_:Array = null;
- var _loc8_:uint = 0;
- var _loc9_:uint = 0;
- var _loc10_:String = null;
- var _loc11_:QName = null;
- var _loc12_:uint = 0;
- var _loc13_:QName = null;
- var _loc14_:uint = 0;
- var _loc15_:String = null;
- var _loc16_:XMLNode = null;
- var _loc17_:String = null;
- var _loc18_:String = null;
- if(param1 == null)
- {
- return null;
- }
- _loc5_ = getDataTypeFromObject(param1);
- if(_loc5_ == DataType.FUNCTION_TYPE)
- {
- return null;
- }
- if(_loc5_ == DataType.XML_TYPE)
- {
- _loc4_ = param1.cloneNode(true);
- param3.appendChild(_loc4_);
- return _loc4_;
- }
- _loc4_ = myXMLDoc.createElement("foo");
- _loc4_.nodeName = param2.localName;
- param3.appendChild(_loc4_);
- if(_loc5_ == DataType.OBJECT_TYPE)
- {
- _loc6_ = ObjectUtil.getClassInfo(param1,null,CLASS_INFO_OPTIONS);
- _loc7_ = _loc6_.properties;
- _loc8_ = _loc7_.length;
- _loc9_ = 0;
- while(_loc9_ < _loc8_)
- {
- _loc10_ = _loc7_[_loc9_];
- _loc11_ = new QName(null,_loc10_);
- encodeValue(param1[_loc10_],_loc11_,_loc4_);
- _loc9_++;
- }
- }
- else if(_loc5_ == DataType.ARRAY_TYPE)
- {
- _loc12_ = uint(param1.length);
- _loc13_ = new QName(null,"item");
- _loc14_ = 0;
- while(_loc14_ < _loc12_)
- {
- encodeValue(param1[_loc14_],_loc13_,_loc4_);
- _loc14_++;
- }
- }
- else
- {
- if(_loc5_ == DataType.DATE_TYPE)
- {
- _loc15_ = encodeDate(param1 as Date,"dateTime");
- }
- else if(_loc5_ == DataType.NUMBER_TYPE)
- {
- if(param1 == Number.POSITIVE_INFINITY)
- {
- _loc15_ = "INF";
- }
- else if(param1 == Number.NEGATIVE_INFINITY)
- {
- _loc15_ = "-INF";
- }
- else
- {
- _loc17_ = param1.toString();
- _loc18_ = _loc17_.substr(0,2);
- if(_loc18_ == "0X" || _loc18_ == "0x")
- {
- _loc15_ = parseInt(_loc17_).toString();
- }
- else
- {
- _loc15_ = _loc17_;
- }
- }
- }
- else
- {
- _loc15_ = param1.toString();
- }
- _loc16_ = myXMLDoc.createTextNode(_loc15_);
- _loc4_.appendChild(_loc16_);
- }
- return _loc4_;
- }
- }
- }
-
-